// component/mMediaShow/index.ts
Component({

  /**
   * 组件的属性列表
   */
  properties: {
    // 文件列表
    fileList: {
      type: Array,
      value: []
    },
    // 是否显示上传按钮
    showUpload: {
      type: Boolean,
      value: true
    },
    // 是否显示删除按钮
    deletable: {
      type: Boolean,
      value: true
    },
    // 最大文件上传个数
    count: {
      type: Number,
      value: 9
    },
    // image，video，mix可同时选择图片和视频
    mediaType: {
      type: String,
      value: 'mix'
    },
    // 是否压缩所选文件
    sizeType: {
      type: Array,
      value: ['original', 'compressed']
    },
    // 图片和视频选择的来源
    sourceType: {
      type: Array,
      value: ['album', 'camera']
    },
    // 拍摄视频最长拍摄时间，单位秒。时间范围为 3s 至 60s 之间。不限制相册。
    maxDuration: {
      type: Number,
      value: 10
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 预览视屏
    videoUrl: '',
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 选择文件
    choiceMeida() {
      if(this.properties.fileList.length > this.properties.count) {
        wx.showToast({title: '最多选择个'+this.properties.count+'文件', icon: 'none'});
        return;
      }
      wx.chooseMedia({
        count: this.properties.count-this.properties.fileList.length,
        mediaType: [this.properties.mediaType],
        sizeType: this.properties.sizeType,
        sourceType: this.properties.sourceType,
        success: (res) => {
          this.triggerEvent('after-read', res.tempFiles.map(item => {
            return {
              type: item.fileType,
              size: item.size,
              url: item.tempFilePath
            }
          }));
        }
      })
    },

    // 删除文件
    deleteMeida(event:any) {
      this.triggerEvent('delete', event.currentTarget.dataset.index);
    },

    // 预览图片
    previewImage(event:any) {
      let index = event.currentTarget.dataset.index;
      let fileList = this.data.fileList;
      let item = fileList[index];

      wx.previewImage({
        current: item.url,
        urls: [item.url]
      })
    },

    // 预览视频
    previewVideo(event:any) {
      let index = event.currentTarget.dataset.index;
      let fileList = this.data.fileList;
      let item = fileList[index];
      this.setData({
        videoUrl: item.url
      })
    },

    // 关闭视频预览
    closePreviewVideo() {
      this.setData({
        videoUrl: ''
      })
    }

  }
})